<?php
class Controller {

	var $vars = array();		// Variables que l'on veut pousser dans la vue
	var $layout = 'default';	// On utilise le layout par default

	// Constructeur qui charge le model correspondant au controller dans lequel on se trouve
	function __construct(){
		$this->Session = new Session();

		if (isset($this->models)){
			foreach ($this->models as $v){
				$this->loadModel($v);
			}
		}
	}

	/**
	 * Permet d'envoyer des données à une vue
	 * @param $filename nom du ficher correspondant à la vue
	 */
	function render($filename){
		extract($this->vars);
		ob_start();
		require ROOT.'views/'.get_class($this).'/'.$filename.'.php';
		$content_for_layout = ob_get_clean();
		if ($this->layout == false){
			echo $content_for_layout;
		}
		else{
			require ROOT.'/views/layout/'.$this->layout.'.php';
		}
	}

	/**
	 * Permet d'ajouter des données à la variable que l'on veux pousser dans la vue
	 * @param $array tableau qui contient les données que l'on veut ajouter
	 */
	function set($array){
		// permet de fusionner les tableaux si plusieur set
		$this->vars = array_merge($this->vars, $array);
	}

	/**
	 * Permet de charger un model supplémentaire (pour accéder à d'autre table)
	 * @param $name nom du model (et de la table car les noms doivent être identiques) que l'on veut charger
	 */
	function loadModel($name){
		require_once ROOT.'Models/'.strtolower($name).'.php';
		$this->$name = new $name();
	}

	/**
	 * Permet de rediriger vers une autre url
	 * @param $url url vers laquel on veut rediriger
	 */
	function redirect($url){
		header('Location:'.WEBROOT.$url);
		die();
	}

}
?>